【Golang】go程序性能测试教程+总结

您所在的位置:网站首页 go 单元测试怎么写 【Golang】go程序性能测试教程+总结

【Golang】go程序性能测试教程+总结

2024-07-16 01:55| 来源: 网络整理| 查看: 265

参考教程:

http://www.topgoer.com/函数/单元测试.html

https://blog.csdn.net/weixin_33906657/article/details/91699657

https://www.cnblogs.com/-lee/p/12689524.html

https://blog.csdn.net/u012855229/article/details/51930709/

https://cloud.tencent.com/developer/article/1469185

https://www.cnblogs.com/Dr-wei/p/11742414.html

https://segmentfault.com/a/1190000016412013

https://www.cnblogs.com/upyun/p/8526925.html

个人简单总结

go程序性能测试一般有两种方法:

编写test程序,使用go test命令行测试在原程序中加入性能分析的代码,使用pprof进行分析 1、go test 测试函数: 类型格式作用测试函数函数名前缀为Test测试程序的一些逻辑行为是否正确基准函数函数名前缀为Benchmark测试函数的性能示例函数函数名前缀为Example为文档提供示例文档

b.ResetTimer() 重置计时器 b.SetParallelism(1) 设置使用的CPU数

go test的一些实用参数: -v 查看测试函数名称和运行时间-run=“xx” 只有函数名匹配上xx的测试函数才会被go test命令执行,xx是正则表达式-list “xx” 只列出函数名匹配xx的测试函数-cover 查看测试覆盖率,在测试中至少被运行一次的代码占总代码的比例-coverprofile 用来将覆盖率相关的记录信息输出到一个文件,如=a.out-cpuprofile cpu.out 记录cpu使用情况,不可直接读,需要用到go tool pprof cpu.out-memprofile mem.out 记录内存使用情况-memprofilerate n 控制记录内存分配操作的行为,每当有n个字节的内存被分配时,分析器就会取样一次,默认512 * 1024=512K字节-bench 基准测试,-bench=正则表达式,-bench=.表示运行所有的基准测试-benchmem 获得内存分配的统计数据,即显示B/op和allocs/op-benchtime 基准时间,默认1s,-benchtime=20s-cpu num 来指定使用的CPU数量num-count 每个测试执行的次数,默认执行一次。-failfast 有测试函数失败,立马结束测试-parallel num 测试的最大并发数-timeout=ts 超时时间s/m/h-v 打印详细的测试日志net 性能说明:

allocs/op表示每次执行函数,内存分配次数 ns/op表示每次执行函数的耗时(多次执行的平均值) B/op表示每次执行函数,内存分配的字节数

2、pprof 方法一 $ go get github.com/pkg/profile

main函数中加入defer profile.Start().Stop()或者defer profile.Start(profile.MemProfile).Stop()

$ go build xx.go $ ./xx

./xx 的输出:

2020/10/28 20:29:50 profile: memory profiling enabled (rate 4096), /var/folders/sm/zk2pqw_55ps2n27_kt7zp2tr0000gn/T/profile215874309/mem.pprof sum = 49999995000000 2020/10/28 20:29:50 profile: memory profiling disabled, /var/folders/sm/zk2pqw_55ps2n27_kt7zp2tr0000gn/T/profile215874309/mem.pprof

$ go tool pprof -pdf 生成的pprof文件的地址 > cpu.pdf 方法二 $ go test -bench=. -memprofile=mem.out -cpuprofile=cpu.out $ go tool pprof cpu.out $ go tool pprof mem.out

topn:查看CPU前n名的占用情况

参数说明:

flat:当前函数占用CPU的耗时flat::当前函数占用CPU的耗时百分比sun%:函数占用CPU的耗时累计百分比cum:当前函数加上调用当前函数的函数占用CPU的总耗时cum%:当前函数加上调用当前函数的函数占用CPU的总耗时百分比最后一列:函数名称

list 函数名:查看函数的执行情况 web:通过svg图的方式查看程序中详细的CPU占用情况

⚠️使用web前要先安装gvedit,官网https://graphviz.org/download/ MacOS直接使用命令行即可: brew install graphviz

此外还可以通过火焰图动态查看CPU占用情况。最上面的教程中已经介绍的比较详细了,此处不在赘述,可以直接阅读上述教程。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3